package com.yf.zzmusic.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;

/**
 * <p>
 * 用户表，用户分为普通用户，歌手与管理员
 * </p>
 *
 * @author
 * @since 2024-02-03
 */
@Getter
@Setter
@TableName("user")
public class User implements Serializable {

  private static final long serialVersionUID = 1L;

  @TableId(value = "user_id", type = IdType.AUTO)
  private Integer userId;

  /**
   * 用户登录账号（手机号）
   */
  @NotNull(message = "手机号不可为空")
  private String phone;

  /**
   * 用户登录密码
   */
  @NotNull(message = "密码不可为空")
  private String password;

  /**
   * 用户座右铭
   */
  private String motto;

  /**
   * 用户昵称
   */
  private String nickname;

  /**
   * 用户头像
   */
  private String cover;

  /**
   * 用户类型(默认为0，表示普通用户，1表示歌手，2表示管理员)
   */
  private Integer type;

  /**
   * 真实姓名
   */
  private String realname;

  /**
   * 国籍id,存储时需要将id根据字典来
   */
  private Integer nationalityId;

  /**
   * 国籍
   */
  private String nationality;

  /**
   * 简介
   */
  private String introduction;

  /**
   * 用户生日，默认为创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private LocalDateTime birthday;
  /**
   * 外文名，或其他名字
   */
  private String otherName;

  public Long getBirthday() {
    if (birthday != null) {
      long timestamp = birthday.toInstant(ZoneOffset.of("+8")).toEpochMilli();
      return timestamp;
    } else {
      return null;
    }

  }

  public void setBirthday(LocalDateTime birthday) {
    this.birthday = birthday;
  }
}
